約 2,010,454 件
https://w.atwiki.jp/gdiplus2/pages/14.html
動作に必要なファイルは、以下のリンクを辿って入手してください。 gdi++.dll(FreeType版)本体 freetype.dll ※以下の内容は、バイナリ(F)とほぼ重複し、かつ情報量が多いです。過去の経緯を詳細に調べる場合などに有効です。 gdi++ FreeType版(上に行くほど最新) ※ gdi++ FreeType版 の動作には、別途freetype.dllが必要です。 gdi0850 (IdeographicVariationSequences(異体字)対応テスト版) http //free.flop.jp/gdi++/src/gdi0850.zip (中略) (Helium派生~現在公開停止) gdi0789 (実験版(ソース整理・機能削減。再up・転載は控えて)) http //free.flop.jp/gdi++/oldsrc/gdi0789.lzh gdi0787 (メモリーリーク・バッファオーバーラン修正) http //free.flop.jp/gdi++/oldsrc/gdi0787.lzh (中略) gdi0577 http //free.flop.jp/gdi++/oldsrc/gdi0577.zip (中略) gdi0260 (gdi0257を3倍近く高速化) gdi0257 ([DLL] gdi0238で修正) http //free.flop.jp/gdi++/src/gdi0260.zip (3倍近く高速化) http //free.flop.jp/gdi++/src/gdi0257.zip 255 名前:名無し~3.EXE 2006/11/05(日) 03 10 23 ID gDmtJ1sE 251 251 名前:名無し~3.EXE 2006/11/05(日) 02 30 44 ID jqpBSdu7 AntiAliasMode=1だと諸々のダイアログが寸詰りになります。 gdi0257.zip XP SP2 上:0 下:1 http //free.flop.jp/gdi++/src/gdi0259.png 確かにAntiAliasMode=1、HintingMode≠1の時に詰まってるなぁ FreeTypeのバグなのか、LightはMacOSX風らしいから文字幅計算もMacに合わせてたりして。 252 252 名前:名無し~3.EXE 2006/11/05(日) 02 40 06 ID yP5zBn6r めちゃくちゃおもくなった やあアンチ君。君の要望に応えて3倍近く高速化してみたよ。 HDBENCHのText 前 2745 後 7966 250 名前:名無し~3.EXE 2006/11/05(日) 02 04 02 ID gDmtJ1sE 結局 231の問題は解決したかどうか分からんが正式age 231 名前:名無し~3.EXE 2006/11/04(土) 21 31 50 ID ByU7etch それよりも http //free.flop.jp/gdi++/src/gdi0248.png 選択範囲がズレる問題。 非FreeTypeの時は浮動小数点の丸め誤差が原因らしかったけど、 こっちでは如何なの? それと、このInformationってやつ、 本来はCSSのletter-spacingで文字間が0.5em空く筈なんだが、 Operaでgdi++使うと見ての通りそれが無くなっちゃう。(FirefoxやIEでは無くならない 非FreeTypeでも、試してみたら発生した。その頃からの問題みたい。 OSはWinXP SP2。 おまけ 付属ツールの転載条件がよー分からんのでマズかったら削除するかも http //free.flop.jp/gdi++/src/gdi0258.zip gdi0238 (ズレが何さ。) http //free.flop.jp/gdi++/src/gdi0237.7z http //free.flop.jp/gdi++/src/gdi0238.zip 153 名前:555 ◆T5FLAkjak. [sage] 投稿日:2006/11/03(金) 20 05 07 ID NerZQo4F 流れをぶった切って投下 gdi0235ベース ずっとくすぶってる上下ズレに終止符をうつべく焼きいもを食いながらビルド。 Helveticaの人とかヒラギノMYCOMの人とかどんなもんでしょう。 ちょいと微妙なのでうまくいかないときは破棄で。 gdi0235 ([DLL] gdi0228に機能追加) http //free.flop.jp/gdi++/src/gdi0235.zip 146 名前:693[sage] 投稿日:2006/11/03(金) 18 47 40 ID x3TcwljQ 555氏のreadmeをマージして正式age 横幅80文字派だから勝手に改行しちゃった。テヘ ついでに[HintingMode]が[Individual]という懐かしい名前に変わりますた。 gdi0230 ([DLL] Hinting暫定age) http //free.flop.jp/gdi++/src/gdi0230.zip 126 名前:名無し~3.EXE[sage] 投稿日:2006/11/03(金) 12 16 36 ID x3TcwljQ Hintingの話が出てるのでここらで暫定age [HintingMode] メイリオ=0 MS Pゴシック=2 とかできる。 123 って555氏? readme統合中なので追記する部分とかあったら修正してホスィ gdi0228 ([DLL] gdi0224ベースで色々修正) http //free.flop.jp/gdi++/src/gdi0228.zip 101 名前:名無し~3.EXE[sage] 投稿日:2006/11/03(金) 01 13 27 ID x3TcwljQ マジでM$頃してぇ・・・ http //free.flop.jp/gdi++/src/gdi0229.png (冥霊から明瞭へ) gdi0224 (gdi0216mod3) http //free.flop.jp/gdi++/src/gdi0224.lzh 86 名前:名無し~3.EXE 2006/11/02(木) 20 10 40 ID 350fdeQH 標準のアンチエイリアスみたいだね。 直ったと思う。多分。 #大ポカしてた。orz gdi0222 (gdi0216mod2) http //free.flop.jp/gdi++/src/gdi0222.lzh 71 名前:555 2006/11/02(木) 16 47 39 ID YW+1VgIQ 53 の修正とか。 53 名前:名無し~3.EXE 2006/11/02(木) 12 58 14 ID /VM5C/mp IEだと LI タグの表示がおかしくなるね 50 のgの下欠けはどう? 50 名前:名無し~3.EXE 2006/11/02(木) 11 25 02 ID OnVg6K6s 46 OpenTypeでもまともに表示されるようになったっぽい。 "g"みたいに下に出っ張る文字は底が欠けるけど、これはしょうがないのかな。 パッケージから2ch.gdi++.freetype.manifestがなくなってるので、 またfreetype.dllの場所問題が出そう。 旧アーカイブからもってくればいいんだけど。 55 37にお礼 55 名前:名無し~3.EXE 2006/11/02(木) 13 55 15 ID mcy3bCvh modの0.54で化けなくなったね。 Opentypeのヒラギノでも化けなくなったね。 乙 56 56 名前:名無し~3.EXE[sage] 投稿日:2006/11/02(木) 14 07 22 ID OnVg6K6s 52 特定フォントの位置ズレ。SHG30Pも半角文字がずれるんだが、 ASCIIArtを表示させるために時幅?を調整するパッチを当てたものだと ズレが出ないで普通に表示できることに気づいた。 インターセプトのところは普通にフックでいいと思う。 昔のとおり「横取り」でもいい。何で変えたんだろう。 TTFでは文字幅に限らずいろんなところに同じ意味の値が格納されていて MacとWindowsで描画が異なったりする。で、FreeTypeがみてるのがWindowsと違うというオチ。 これはフォント側の責任な気がしてならない。ちゃんと同じ値を指定して欲しい。 fontforgeあたりで編集したりするとまともになったりするのはそのせい。 67 67 名前:名無し~3.EXE 2006/11/02(木) 16 15 31 ID dQFx1awV gdi0217+gdi0155でなんか少しずれる 使ったとき┐|┘とかの描写も少し変になってる 同上。だけど違う問題かもしれない。要調査。 64 64 名前:名無し~3.EXE 2006/11/02(木) 15 54 06 ID cW6PiSjM XPですがfreetype版だと大半のアプリケーションでメニュー、コンテキストメニュー等に効かなくなっています。 http //free.flop.jp/gdi++/src/gdi0219.png それと、本家のバージョンでは正常に動きます。 これは多分CreateFontしないでフォントを使ったりしてるときにでてくるはず。 GetObjectでLOGFONTを取得してもフォント名が空っぽなんで弾いてる。 なんとかならんかね? gdi0217 ([DLL] gdi0216+XPで化ける対策) http //free.flop.jp/gdi++/src/gdi0217.zip 46 :名無し~3.EXE:2006/11/02(木) 10 01 00 ID F3TiC1I8 はい。皆さんおはよう御座います。7-zipがうpろだでうまく扱えないのに気づきまして御座います。 さて、ズレに関してGetTextMetrics内でAscendをFTのものに書き換え、 かつTextOut内でAscenderをベースラインに使えばいいのではないかと気づきましたところ 手元ではずれがなくなったように思えますので報告させていただきます。 #どうもOpenType系だとOUTLINETEXTMETRICのMacAscend(FTもこれ)と一致しないがTrueTypeだと大体一致するっぽい。 #GetTextExtentPointは変えてない。 #freetype_face- heightはLineGapをアセンダ+ディセンダに足してあるのでLineGapが100%の書体で面白いことになる。 化ける報告がXPばかりということもうすうす気づいておりましたが 37 氏の報告を読みまして とりあえずXPでORIG_*TextOutAを呼び出す部分を殺してみました。お試しください。 #これって何か深い意味あるのかね? (履歴は更新してない) #readme統一したほうがよくね? むしろマージしてくれ。 gdi0216 ([DLL] gdi0209修正+機能追加) http //free.flop.jp/gdi++/src/gdi0216.zip 993 名前:名無し~3.EXE 2006/11/01(水) 23 17 06 ID GIgSb3ky 終わりかけの3pxにあえて書いてみる 豪速化オプション搭載。マジで目ん玉飛び出るぐらい速くなるが使用は要注意 メイリオ改造版 は悪いけどgdi++側でどうする事もできんと思われ。 上でageてくれた170MBのダンプtxtと睨めっこしても何も分からんかったしなぁ。 gdi0206 (gdi0181+...) http //free.flop.jp/gdi++/src/gdi0206.zip 914 名前:名無し~3.EXE 2006/11/01(水) 01 32 00 ID +pKdjOuP とりあえずこの辺で投下 メイリオ 本家メイリオで試してみたら特に化けてないなぁ 何となく改造版のヘッダが壊れてそうな気がするけど誰かttfdumpで調べてホスィ 912 BoldなM+2VM+IPAG circleが、0だけ妙に細くなる CVSのやつでは問題ないのでFreeType2.2.1のバグと思われ。 つか我ながらデバッグにCVS版使ってるのマズいか。いやLCDの画質が良くて病みつきになってしm(ry batファイルを実行しようとすると、EXEファイルではないと怒られる。 いや、まぁbatだし・・・ あと現時点でFreeType版gdi++とManagerの併用は動作保証外。 非FreeType版gdi++とは内部的に結構違ってるので。 gdi0202 (gdi0181+gdi0195+gdi0198) http //free.flop.jp/gdi++/src/gdi0202.zip 902 名前:名無し~3.EXE 2006/10/31(火) 23 12 32 ID Gx/SI8LD 900 900 名前:名無し~3.EXE[] 投稿日:2006/10/31(火) 23 01 32 ID Ay/lTox0 884 修正お疲れ様です。 gdi195で、こちらで確認した 829のズレは直ってるようです。 その影響でしょうか、今までずれていなかったフォント全般(?)が 1dotだけ下にシフトしてるようです。 環境は Win2k + Fx1.5 + gdi195 です。 FreeTypeの影響で沈んでるようにみえるのかと確認してみましたが gdi++無しと比較し、gdi193(またはそれ以前)で 1dotのズレは確認できませんでした。 あ、マジだ 直し方分からんからとりあえず描画位置を1px引き算しておくww メイリオ FreeType使ってほしくないというM$の最後の抵抗 (冗談なので間に受けないように) gdi0193 (gdi0181修正版) http //free.flop.jp/gdi++/src/gdi0193.lzh 876 名前:名無し~3.EXE 2006/10/31(火) 19 08 25 ID N65EMYrT とりあえず0181に 874のIMEと位置ズレの変更をしただけ。 化けない俺だけど一応メイリオのやつ meiryoKeGothic.ttc(5.00+rev1) size 9260904 CRC32 f5422589 MD5 c1c6c6f4ab8e8ff5626e991f46160e72 SHA1 3ca51f1697155c2c23fcf87516d6f0ba57c895c8 OSはWindows2000。何度か試してるけど化けには出会えない。 gdi0181 (gdi0177の修正) http //free.flop.jp/gdi++/src/gdi0181.zip 822 名前:名無し~3.EXE 2006/10/30(月) 04 00 33 ID ojq82nNs ちゅーかサブピクセルレンダリングのコードバグってるやん って事で修正+比較スクショ ttp //free.flop.jp/gdi++/src/gdi0180.png ttp //free.flop.jp/gdi++/src/gdi0181.zip 821 ウィンドウタイトルが化ける フォントリンクは化けるのでExclude推奨 リンクの下線が少し下の部分に表示される つ gdi0181 ビットマップフォントがビットマップで表示されない 擬似TTFなら表示されないのは仕様 MS IMEの変換部分で選択している文字列が一文字目しか表示されない ん、これは・・・クリッピングの計算がバグってるのかな? 手元の環境でも再現できたからまー明日にでも調べてみるか つか何だこの時間は('A`) gdi0177 (gdi0172+カーニングオプションと文字サイズの何) http //free.flop.jp/gdi++/src/gdi0177.lzh 817 名前:555 2006/10/29(日) 22 36 24 ID JRY0gR7g とりあえずカーニングのオプションだけつけてみただけ。 0172ベースにしちゃった。ごめん。 んで、文字のサイズ計算をちょっといじくっちゃいました。 また欠けとかでるかもしれないので注意してくださいませ。 なんでこんなことしたかというとですね TextExtentPointあたりでしっかりサイズ計算するためには どうしてもちゃんとTextOutと整合したサイズ計算にしたいと思ったのですね。 んでなぜかFT_Request_Sizeを使うと落ちるんですね。 face_requesterから返されたFaceのsizeをキャッシュマネージャが解放しているんですが FT_Request_Sizeではsizeを使って関連付けられたfaceを参照するんですね。 face- size saze- faceと。 んで検索して見たりしたらこんなのを見つけた。 ttp //www.mail-archive.com/freetype@nongnu.org/msg00952.html このあたり見ると大嘘ですね。ぶち切れですね。 gdi0173 (manifest付きgdi0172) http //free.flop.jp/gdi++/src/gdi0173.zip 815 名前:名無し~3.EXE 2006/10/29(日) 21 27 12 ID wMbHDms7 論より証拠でgdi0172のgdi++.dllにmanifestを付けただけのものを作ってみた。 中のgdi++.dllをgdi0172のものと置き換えて2ch.gdipp.freetype.manifestと freetype.dllをgdi++.dllと同じフォルダにコピーすればおk gdi0172 (gdi0170ベース+何か) http //free.flop.jp/gdi++/src/gdi0172.zip 784 名前:名無し~3.EXE 2006/10/29(日) 14 14 29 ID Wb5LTQDj 781 キタ━━━━(゚∀゚)━━━━!! で、早速w http //free.flop.jp/gdi++/src/gdi0172.zip gdi0169.png それなんて風水? まー漏れも普段こんな感じなんだが。PC-98マンセー http //free.flop.jp/gdi++/src/gdi0171.png gdi0170 (gdi0168修正版) {http //free.flop.jp/gdi++/src/gdi0170.lzh} 781 名前:555 2006/10/29(日) 13 20 36 ID qRA4JHFa 太字と斜体をつけといた。 今回は要DLL 775 名前:名無し~3.EXE 2006/10/29(日) 11 39 41 ID Wb5LTQDj 774 鯖の容量は2MB*10000も無いと思うけど、どうなんでしょ>中の人 とか言ってる間にgdi0164+gdi0166が出来たので差分うpってみるてすと 手動でマージしたのでおかしい所があるかも ttp //free.flop.jp/gdi++/src/gdi0168.zip ちらしのうら readme_555の最後の行が気になる・・・ でも何となく想像がついたりしてw /ちらしのうら gdi0164 (gdi0156の修正版) http //free.flop.jp/gdi++/src/gdi0164.zip 764 名前:名無し~3.EXE 2006/10/29(日) 10 15 14 ID Wb5LTQDj いろいろ修正+整理。 まとめレス。 悪い事は言わんからfreetype.dllは*PATHの通ったフォルダ*に桶 漏れはフォントリンクに対応する気は無いからExclude追加で諦めれ 表示周りの不具合はここに書かれても困る ↓の中の人にメールでも送って修正頼んだ方がいいかと ttp //hp.vector.co.jp/authors/VA028002/ gdi0156 (gdi0152の修正版) http //free.flop.jp/gdi++/src/gdi0156.zip 735 名前:名無し~3.EXE 2006/10/28(土) 17 41 18 ID lCUfvZHY ズレ欠け+色化け修正 ビフォーアフター http //free.flop.jp/gdi++/src/gdi0157.png gdi0152 (gdi0143 + FreeType = gdi0149 の修正版) gdi0151 (FreeType DLL版) http //free.flop.jp/gdi++/src/gdi0152.zip http //free.flop.jp/gdi++/src/gdi0151.zip 703 名前:名無し~3.EXE 2006/10/28(土) 11 38 59 ID lCUfvZHY 先越されたorz 700 700 名前:名無し~3.EXE 2006/10/28(土) 11 11 31 ID O3+ZmekM http //free.flop.jp/gdi++/src/gdi0150.zip こうかな。コマンドライン修正したつもり。 多分直ってない・・・と思う 同じフォルダにあるreadme.txtとかをgdi++.exeにD Dしてもファイルが開けないし。 ついでに言うと本家0927版は↓みたいなショートカットをD Dしても正常に動作しなかった。 "C \Program Files\Mozilla Firefox 2\firefox.exe" -P bonecho ってことで直しますた http //free.flop.jp/gdi++/src/gdi0152.zip ついでにFreeTypeでバイトコードインタプリタを有効にしてみた。効いてるかは知らん http //free.flop.jp/gdi++/src/gdi0151.zip 702 702 名前:名無し~3.EXE 2006/10/28(土) 11 29 43 ID PFUQVBGY ひさびさに見たらついていけなくなってるorz どれ落とせばいいんだよ('A`) つ gdi0151&gdi0152 gdi0143 (up0133をコンパイルした物) http //free.flop.jp/gdi++/src/gdi0143.zip 659 名前:名無し~3.EXE 2006/10/27(金) 01 13 36 ID XKMY1awz 656 656 名前:名無し~3.EXE 2006/10/27(金) 00 51 42 ID W5WEBeIk 除外フォント機能はうまく利いていない気がする。 スクロールすると適用されてしまう。 Windows 2000 Service Pack 4 そういやExcludeチェックにバグがあったの忘れてた 多分up0118・up0133(今は無い)以外では直ってないはずなので、 とりあえずup0133をコンパイルした物を置いといた これで直ってなかったら知らん 657 それなら"[除外]"にしてもいいかと。日本語大丈夫だったはず。 up0139 (FreeType2 MS Pゴシック 16ピクセルのみ) http //free.flop.jp/gdi++/src/gdi0139.lzh 555 名前:名無し~3.EXE 2006/10/24(火) 14 19 54 ID WYOEybts FreeType2 MS Pゴシック 16ピクセル 自分で自分のJaneのスレ内だけかかれば良し。ツリーもリストもシラネーヨ版。 570 名前:555 2006/10/24(火) 22 41 16 ID 06MRDaL0 作りについての情報とか 元にしたのは本家gdi++20060927.zipで FreeTypeの使い方は LINK ほぼそのまま(コメント入れときゃ良かった)。 1.ロード時にFreeTypeを初期化してフォントをロードしている。 2.元でlfEscapementをチェックしている後にフォントのチェックを入れている(フォント名チェックはずしてReleaseしたかも御免)。 少し改善案とか 一.動いて少し試せればイイダロぐらいの気持ちでやったので無駄があるはずだからそれをつぶすこと。 ニ.1でのフォントロードを止めて2でロードするように変更すると色々対応できるかも 三.ニの案のかわりに1のタイミングでロードしておくフォントをiniか何かで指定する方法もありそう 四.MMX、SSEなんかを使ったアルファブレンド 五.サブピクセルレンダリングとかLINK みたいな調整とか
https://w.atwiki.jp/vst_prog/pages/25.html
VST(エフェクター)作り概要 作成手順概要 VSTでエフェクタを作成する場合、大きく以下の手順で行う。 エフェクタの設計 プロジェクトの作成 コーディング 各手順についての詳細、注意事項について記載はそれぞれの項目を参照 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/sylx/pages/27.html
DLLの種類 非MFC DLL MFCと静的にリンクされるレギュラーDLL MFCと動的にリンクされるレギュラーDLL 拡張DLL 非MFC DLL 非 MFC DLL は、MFC を内部的に使わない DLL です。非 MFC DLL のエクスポート関数は、MFC、非 MFC のどちらの実行可能ファイルからも呼び出すことができます。通常、関数は C 言語の標準インターフェイスを使って非 MFC DLL からエクスポートされます。 MFCと静的にリンクされるレギュラーDLL MFC と静的にリンクするレギュラー DLL は、MFC を内部的に使用します。このレギュラー DLL のエクスポート関数は、MFC、非 MFC のどちらの実行可能ファイルからも呼び出すことができます。名前からもわかるように、この種の DLL は MFC のスタティック リンク ライブラリ バージョンを使ってビルドされます。通常、関数は C 言語の標準インターフェイスを使ってレギュラー DLL からエクスポートされます。 USRDLL という用語は、Visual C++ ドキュメントでは使用されなくなりました。MFC に静的にリンクしたライブラリが以前の USRDLL に相当します。 MFC と静的にリンクされるレギュラー DLL の特徴は、以下のとおりです。 クライアントの実行可能ファイルは、DLL を使用できる任意の言語 (C、C++、Pascal、Visual Basic など) で記述できます。MFC アプリケーションでなくてもかまいません。 複数のアプリケーションで使用される MFC のスタティック リンク ライブラリとリンクできます。DLL のスタティック リンク バージョンのライブラリは、今後使用されなくなります。 MFC のバージョン 4.0 以前では、MFC と静的にリンクされるレギュラー DLL と同じ種類の機能を各種の USRDLL が提供していました。しかし、Visual C++ バージョン 4.0 では USRDLL という用語は使用しません。 MFC と静的にリンクされるレギュラー DLL の必要条件は、以下のとおりです。 CWinApp 派生クラスをインスタンス化します。 MFC から提供される DllMain を使用します。通常の MFC アプリケーションと同じく、DLL 固有のすべての初期化コードをInitInstance メンバ関数に配置し、終了コードを ExitInstance メンバ関数に配置します。 USRDLL という用語は使用されませんが、コンパイラのコマンド ラインではまだ "_USRDLL" を定義する必要があります。この定義により、MFC ヘッダーファイルから取り込まれる宣言が決まります。 MFCと動的にリンクされるレギュラーDLL MFC と動的にリンクするレギュラー DLL は、MFC を内部的に使用します。このレギュラー DLL のエクスポート関数は、MFC、非 MFC のどちらの実行可能ファイルからも呼び出すことができます。名前からもわかるように、この種の DLL は MFC のダイナミック リンク ライブラリ バージョン (MFC の共有バージョン) を使ってビルドされます。通常、関数は C 言語の標準インターフェイスを使ってレギュラー DLL からエクスポートされます。 MFC と動的にリンクする標準 DLL 中のエクスポートされるすべての関数の先頭に AFX_MANAGE_STATE マクロを追加して、現在のモジュール ステートを DLL のモジュール ステートに設定する必要があります。これは、DLL からエクスポートされる関数の先頭に次のコード行を追加して行います。 AFX_MANAGE_STATE(AfxGetStaticModuleState( )) MFC と動的にリンクされるレギュラー DLL の特徴は、以下のとおりです。 Visual C++ 4.0 で新たに導入された DLL です。 クライアントの実行可能ファイルは、DLL を使用できる任意の言語 (C、C++、Pascal、Visual Basic など) で記述できます。MFCアプリケーションでなくてもかまいません。 静的にリンクされるレギュラー DLL とは異なり、MFC DLL と動的にリンクされます。MFC DLL は、MFC の共有 DLL とも呼ばれます。 この種の DLL にリンクされる MFC インポート ライブラリは、MFC DLL を利用するアプリケーションや拡張 DLL で使われるものと同じもので、MFCxx(D).lib です。 MFC と動的にリンクされるレギュラー DLL には、以下の必要条件があります。 MFC DLL と動的にリンクされる実行可能ファイルと同じく、_AFXDLL を定義してコンパイルされます。ただし、MFC と静的にリンクされるレギュラー DLL と同じく、_USRDLL も定義されます。 CWinApp 派生クラスをインスタンス化します。 MFC から提供される DllMain を使用します。通常の MFC アプリケーションと同じく、DLL 固有のすべての初期化コードをInitInstance メンバ関数に配置し、終了コードを ExitInstance メンバ関数に配置します。 拡張DLL MFC 拡張 DLL は、既存の MFC ライブラリ クラスから派生した再利用可能なクラスを主に実装する DLL です。拡張 DLL は、MFC のダイナミック リンク ライブラリ バージョン (MFC の共有バージョン) を使ってビルドされます。ただし、拡張 DLL を使用できるのは、MFC の共有バージョンを使ってビルドされた MFC の実行可能ファイル (アプリケーションまたはレギュラー DLL) だけです。拡張 DLL を使うと、MFC から新しいカスタム クラスを派生し、この拡張バージョンの MFC を DLL を呼び出すアプリケーションに提供できます。 また、拡張 DLL を使うと、アプリケーションと DLL の間で MFC の派生オブジェクトをやり取りすることもできます。やり取りされるオブジェクトに関連付けられたメンバ関数は、そのオブジェクトが作成されたモジュール内にあります。これらの関数は MFC の共有 DLL バージョンの使用時に正しくエクスポートされるので、MFC のポインタまたは MFC の派生オブジェクトのポインタをアプリケーションと拡張 DLL との間で自由にやり取りできます。 DLLのリソースを使う DLLからリソースを使おうとすると、EXE側のリソースが使われてしまう。 使用するリソースを切り替えるために、DLLでリソースを使うスコープで、AFX_MANAGE_STATE(AfxGetStaticModuleState())の処理を入れる。 切り替えたリソースは、スコープから外れると自動で元に戻る。 ただし、DLLでリソースを使うたびに処理を入れるのは面倒なので、リソースDLLを作ってEXEと共有するのが楽だと思う。
https://w.atwiki.jp/freememo/pages/31.html
概要メリット DLL探索順序 PATH設定方法 DLLのリソースを利用する文字列の場合 アイコンの場合 コメント 概要 DLL (Dynamic Loadable Library)。UNIXプラットフォームの「Shared Library」に相当する機能。 Windowsにおいて、複数のアプリケーションソフトが共通して利用するような汎用性の高いプログラムを部品化してファイルとして保存しておき、 必要に応じてメモリに呼び出して利用する手法。また、そのようにして利用されるプログラム部品のこと。 WindowsはOSとしての機能の多くをDLLとして提供しており、基本的なアプリケーションソフトならば標準のDLLが持つ機能を呼び出すだけで構築できることも多い。 メリット 関数、データ及びリソースを複数のアプリケーションから共有できる アプリケーションの機能を追加or修正を行う場合,アプリケーションの再ビルドを行わず,DLLのみの交換で保守が可能になる DLL探索順序 アプリケーションが読み込まれたディレクトリ 現在のディレクトリ Windowsシステム ディレクトリ(GetSystemDirectory()で取得可能) Windowsディレクトリ(GetWindowsDirectory()で取得可能) PATH環境変数に設定されているディレクトリ (PATH確認方法) PATH設定方法 Windows7の場合 マイコンピューターのプロパティからこの画面を表示して、環境変数ボタンを押下する。 Pathが設定されている項目を選択し、編集ボタンを押下する。 Pathを編集することで、新しいPathを設定する。 TOP DLLのリソースを利用する 文字列の場合 リソースDLLで使用しているresource.hをインクルードする。 #include "..\Samp\resource.h" モジュールインスタンスをロードする。 HMODULE m_hModule = LoadLibraryEx(_T("Samp.dll"), NULL, 0); 既にロードしている場合 HMODULE m_hModule = GetModuleHandle(_T("Samp.dll"); 文字列リソースを取得する。 int nSize = 32; [[CString]] str = _T(""); TCHAR* lpszBuff = str.GetBuffer(nSize-1); int nLen = LoadString(m_hModule, IDS_STRING1, lpszBuff, nSize); str.ReleaseBuffer(); モジュールインスタンスを開放する。 FreeLibrary(m_hModule); アイコンの場合 リソースDLLで使用しているresource.hをインクルードする。 #include "..\Samp\resource.h" モジュールインスタンスをロードする。 HMODULE m_hModule = LoadLibraryEx(_T("Samp.dll"), NULL, 0); 既にロードしている場合 HMODULE m_hModule = GetModuleHandle(_T("Samp.dll"); 文字列リソースを取得する。 HICON m_hIcon = LoadIcon(m_hModule, MAKEINTRESOURCE(IDC_ICON1)); モジュールインスタンスを開放する。 FreeLibrary(m_hModule); TOP コメント 名前 コメント TOP
https://w.atwiki.jp/vst_prog/pages/37.html
VST(エフェクター)作成例 コンパイルの構成 コンパイル時の構成を「Release」に設定する。 (先ほど行ったプロジェクト設定は「Release」構成のコンパイル設定のため。 「Debug」構成のコンパイルに関する設定は省略する。) コンパイルの構成 メニュー「ツール」下あたりにある「Debug」のリストボックスから「Release」を選択する。 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/1note/pages/114.html
DLL 読み方 : ディーエルエル フルスペル : Dynamic Link Library 分野 : Windows 実行環境 Windowsにおいて、複数のアプリケーションソフトが共通して利用するような汎用性の高いプログラムを部品化してファイルとして保存しておき、必要に応じてメモリに呼び出して利用する手法。また、そのようにして利用されるプログラム部品のこと。DLLとして提供されている機能は開発せずにすむので、アプリケーションソフトの開発効率が高まる。また、同じプログラム部品を複数のアプリケーションソフトで共有するので、ディスクやメモリの容量を節約できる。WindowsはOSとしての機能の多くをDLLとして提供しており、基本的なアプリケーションソフトならば標準のDLLが持つ機能を呼び出すだけで構築できることも多い。
https://w.atwiki.jp/vst_prog/pages/88.html
VST Tips(準備中) CVoiceクラスの実装 ここでは前項で定義したCVoiceクラスについて説明する。 CVoiceクラスの初期化 CVoiceクラスではコンストラクタで初期化するためにinit()関数を呼び出している init()関数はメンバー変数に初期値を代入している。 なお、終了処理はないため、デストラクタでは何もしていない。 CVoice CVoice(){// 初期化を実施init();} CVoice ~CVoice(){} void CVoice init(){// メンバ変数を初期化するelapsedFrames = 0.0;status = VOICE_STATE_OFF;noteNo = 0;sampleRate =44100.0f;} CVoiceクラス start()関数、stop()関数 start()関数が呼び出されるとCVoiceクラスは自身が発音している状態であることを示すため、メンバー変数statusをONの状態(VOICE_STATE_ON)にする。 同時にMIDI ノートOnメッセージのノートナンバーを保存し、amplitude()関数が呼び出された際に振幅値が計算できるようにする。 void CVoice start(int note){init();status = VOICE_STATE_ON;noteNo = note;} stop()関数が呼び出されると自身が停止している状態であることを示すためstatusをOFFの状態(OSC_OFF)にする。 ここではオシレータを初期化することでstatusをOFFの状態(OSC_OFF)にしている。 void CVoice stop(){init();} CVoiceクラス amplitude()関数 amplitude()関数が呼び出されると現在の振幅値を返すようにする。 statusがON(VOICE_STATE_ON)の場合はstart()関数で与えられたノートナンバーと経過時間から振幅を計算しその値を返している。 statusがOFF(VOICE_STATE_OFF)の場合は0を返している。 float CVoice amplitude(){// オシレータの振幅を返すif(status == VOICE_STATE_ON){// オシレータの状態がONの時 // ノートNoから周波数を計算するfloat freq = (float)(440.0 * pow(2.0, ((double)noteNo - 69.0)/12.0));; // 現在の振幅量を返すfloat pi = 3.14159265f;return (float)sin(2.0 * pi * freq * elapsedFrames / sampleRate);}else{// オシレータの状態がOFFの時 // 0を返すreturn 0.0f;}} なお、振幅を求めるにはsin関数を用いている。 振幅と周波数・経過時間の関係は以下となる。 f(t) = sin(2πft) π = 3.14159265… t = 経過したフレーム数÷サンプルレート = elapsedFrames / sampleRate f = 周波数 = freq また、freqはノートナンバーから求める。 ノートナンバーがA3(数値で69)のとき440Hzで、オクターブ上がる(ノートナンバーが12増える)ごとに周波数は2倍になるので以下で求めることができる。 440Hz × 2^((69-ノートナンバー)/12) CVoiceクラス update()関数 update()関数が呼び出されるとCVoiceクラスの経過時間を進め、CVoiceクラスの状態を更新する。 void CVoice update(){// 経過時間を進めるif(status != VOICE_STATE_OFF){elapsedFrames += 1.0f;}} 次へ 同一カテゴリのTips 項目 No. 概要
https://w.atwiki.jp/dtmer/pages/41.html
Steinberg s Virtual Studio Technologyの略称。 ソフトシンセやエフェクター?と波形編集ソフト?やDAW?との間のデータの受け渡しを繋ぎ、操作を簡単にするために画像などに出力した標準的な規格の一つである。 スタインバーグ?が開発し、ライセンスを保有している。 プラグインとして提供されるため、DAWなどのホストアプリケーション上でのみ 動作する。 一般的にVSTは処理が複雑であり、遅延することが多い為ASIOデバイスと 共に使われることが多い。 種類 VSTi(インストゥルメント)ソフトシンセとしてのプラグイン。MIDI音源として使われ、非常に多くの種類がある。 VSTe(エフェクト)音響装置としてのプラグイン。出力された音に特殊効果(エフェクト)を掛けるために使われる。 具体的な利用例については「無償版VSTプラグイン」を参照のこと。 関連項目 DXi
https://w.atwiki.jp/vst_prog/pages/38.html
VST(エフェクター)作成例 cppファイルの作成 新しい項目の追加 画面右側のソリューションエクスプローラで「ソースファイル」を選択し、右クリックを押す。 開いたポップアップメニューで「追加」→「新しい項目」を選択する。 CPPファイルの作成 開いたダイアログのテンプレートから「C++ ファイル」を選択。 ダイアログ下側の「ファイル名」に作成するCPPファイルの名前を入力し、「追加」を押す。 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/vst_prog/pages/31.html
VST(エフェクター)作成例 作成するサンプル サンプルエフェクターとしてトレモロを作成する。 仕様は以下の通りとする。 ステレオ入力、ステレオ出力 トレモロの波形はSIN波のみ。 トレモロのスピードを1Hz~30Hzの範囲で変更可能とする。デフォルトは4Hzとする。 トレモロの深さは振幅の倍率を0~1倍の間で変更可能とする。デフォルトは0.5倍とする。 プリセットプログラムはなし。 次へ 合計: - 今日: - 昨日: -